Bài 07 - Array method nâng cao
Mục tiêu bài học
- Ôn lại các thao tác cơ bản với mảng
- Hiểu rõ và sử dụng thành thạo các phương thức cao cấp của mảng như:
map
,filter
,reduce
,find
,some
,every
,sort
- Biết kết hợp nhiều phương thức để xử lý dữ liệu mảng hiệu quả
- Phân biệt được từng phương thức nên dùng trong tình huống nào
Nội dung chính
1. map()
– biến đổi từng phần tử trong mảng
let numbers = [1, 2, 3];
let doubled = numbers.map(x => x * 2);
console.log(doubled); // [2, 4, 6]
2. filter()
– lọc ra các phần tử thoả mãn điều kiện
let numbers = [1, 2, 3, 4, 5];
let even = numbers.filter(x => x % 2 === 0);
console.log(even); // [2, 4]
3. reduce()
– tính gộp toàn mảng về một giá trị
let numbers = [1, 2, 3, 4];
let sum = numbers.reduce((acc, cur) => acc + cur, 0);
console.log(sum); // 10
4. find()
– tìm phần tử đầu tiên thoả điều kiện
let users = [
{ id: 1, name: "A" },
{ id: 2, name: "B" }
];
let user = users.find(u => u.id === 2);
console.log(user); // {id: 2, name: "B"}
5. some()
– kiểm tra có ít nhất một phần tử đúng
let nums = [1, 2, 3];
console.log(nums.some(x => x > 2)); // true
6. every()
– kiểm tra tất cả phần tử có đúng không
let nums = [2, 4, 6];
console.log(nums.every(x => x % 2 === 0)); // true
7. sort()
– sắp xếp mảng
let nums = [5, 1, 10];
nums.sort((a, b) => a - b); // Tăng dần
console.log(nums); // [1, 5, 10]
nums.sort((a, b) => b - a); // Giảm dần
console.log(nums); // [10, 5, 1]
Bài tập
Bài 1 – Biến đổi mảng
Cho mảng [1, 2, 3, 4]
. Dùng map()
để tạo mảng mới gồm bình phương các số.
Bài 2 – Lọc tên có độ dài lớn hơn 4
Cho mảng tên ["Anna", "John", "Maria", "Tom"]
. Dùng filter()
để lọc ra các tên dài hơn 4 ký tự.
Bài 3 – Tính tổng tuổi
Cho mảng object:
[
{name: "A", age: 20},
{name: "B", age: 25}
]
Dùng reduce()
để tính tổng tuổi.
Bài 4 – Kiểm tra điểm có rớt không
Cho mảng điểm [6, 8, 7, 4]
. Dùng some()
để kiểm tra có điểm nào dưới 5 không.
Bài 5 – Tìm học sinh tên "Phú"
Cho danh sách học sinh là array of object. Dùng find()
để tìm học sinh có tên "Phú".